<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/8/17
 * Time: 13:29
 */

function get_links($link) {
    $html = file_get_contents($link);
    $html = str_replace("\n", "", $html);
    $html = preg_replace('/<a/i', "\n<a", $html);
    $html = preg_replace('/<\/a>/', "</a>\n", $html);
    preg_match_all('/<a\s*.*>.*?<\/a>/', $html, $matches);
    return($matches);
}


/*在这个例子中，我们想用file_get_contents来取得一个网页的内容。然后
用str_replace("\n", "", $html)把所有的换行去掉。再
用preg_replace('/<a/i', "\n<a", $html)和preg_replace('/<\/a>/', "</a>\n", $html)来把所有的<a href=".....">.....</a>模式另起一行。最后就
用preg_match_all('/<a\s*.*>.*?<\/a>/', $html, $matches)匹配链接模式。/<a\s*.*>.*?<\/a>/就是匹配<a href=".....">.....</a>这种模式的正则表达式。那我们为什么要把<a href=".....">.....</a>链接另起一行呢？？因为在/<a\s*.*>.*?<\/a>/模式中，.*是不能匹配换行的，所以就如<a>和</a>不在同一行就不能匹配了！！所以我们要这样做！*/